package InvoikeServices;

import java.util.ArrayList;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;

import com.google.android.gcm.GCMRegistrar;

public class HeThongInvoike extends BaseInvoike {
	private static String URL = Protocol.SERVER_URL + "/HeThong";

	public HeThongInvoike() {
	}

	public static boolean register(final Context context) {	
		boolean rs=false;
		try{
		GCMRegistrar.checkDevice(context);
		GCMRegistrar.checkManifest(context);

		// Kiểm tra device đã đăng ký với GCM chưa
		final String regId = GCMRegistrar.getRegistrationId(context);
		Log.d(Protocol.TAG, "reg ID= " + regId);
		if (regId == "") {
			Log.d(Protocol.TAG, "Tiến hành đăng ký với GCM" + regId);
			GCMRegistrar.register(context, Protocol.SENDER_ID);
		} else {
			// Tiến hành đăng ký trên MES-server
			Log.d(Protocol.TAG, "kiểm tra đăng ký DEVICE trên MES-server");
			ArrayList<NameValuePair> par = new ArrayList<NameValuePair>();
			par.add(new BasicNameValuePair(Protocol.CMD, Protocol.DANG_KY_DEVICE));
			par.add(new BasicNameValuePair(Protocol.REG_ID, regId));
			String dangKy = post(URL, par);
			Log.d(Protocol.TAG, "rs=" + dangKy);			
			// Nếu đăng ký trên server ko được thì bỏ đăng ký trên GCM
			if (!dangKy.trim().equals("true") && !dangKy.trim().equals("false")) {
				Log.d(Protocol.TAG, "Hủy đăng ký trên GCM");
				GCMRegistrar.unregister(context);
				rs=false;
			} else {
				Log.d(Protocol.TAG, "Đã ĐK trên MES-Server");
				GCMRegistrar.setRegisteredOnServer(context, true);
				rs= true;
			}

		}
		}
		catch (Exception e) {
			return false;
		}
		return rs;

	}

	public static boolean DangNhap(String tenDangNhap, String matKhau, String regID) throws Exception{
		Log.d(Protocol.TAG,"Đăng nhập");
		ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair(Protocol.CMD, Protocol.DANG_NHAP));
		params.add(new BasicNameValuePair(Protocol.TEN_DANG_NHAP, tenDangNhap));
		params.add(new BasicNameValuePair(Protocol.MAT_KHAU, matKhau));
		params.add(new BasicNameValuePair(Protocol.REG_ID, regID));

		String rs = post(URL, params);
		Log.d(Protocol.TAG,"Đăng nhập xong");
		if (rs.trim().equals("true")) {
			return true;
		} else {
			return false;
		}
	}
	public static String layTinNhan(String tenDangNhap) throws Exception{
		Log.d(Protocol.TAG,"Lấy tin nhắn");
		
		ArrayList<NameValuePair> params=new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair(Protocol.CMD, Protocol.LAY_TIN_NHAN));
		params.add(new BasicNameValuePair(Protocol.TEN_DANG_NHAP, tenDangNhap));
		String rs=post(URL, params);
		return rs;
	}
	public static void guiTinNhanChat(String nguoiGui, String nguoiNhan,String noiDung) throws Exception{
		
		ArrayList<NameValuePair> params=new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair(Protocol.CMD, Protocol.GUI_TIN_NHAN));
		params.add(new BasicNameValuePair(Protocol.NGUOI_GUI, nguoiGui+""));
		params.add(new BasicNameValuePair(Protocol.NGUOI_NHAN, nguoiNhan+""));
		params.add(new BasicNameValuePair(Protocol.NOI_DUNG, noiDung));
		String rs=post(URL,params);
		Log.d(Protocol.TAG,"Gửi tin nhắn chat");
	}
}
